package com.zp.self.module.level_4_算法练习.数据结构.数组;


import java.util.ArrayList;
import java.util.List;

public class 力扣_118_杨辉三角 {
    public static void main(String[] args) {
        List<List<Integer>> generate =new 力扣_118_杨辉三角().generate(5);
        List<List<Integer>> generate2 =new 力扣_118_杨辉三角().generate(1);
        for (List<Integer> integers : generate) {
            for (Integer integer : integers) {
                System.out.print(integer+",");
            }
            System.out.println();
        }
    }

    /**
     * 题目：给定一个非负整数 numRows，生成「杨辉三角」的前 numRows 行。
     * 在「杨辉三角」中，每个数是它左上方和右上方的数的和。
     *
     * 分析：
     *      注意下标越界
     *      每行数组的头尾需手动插入
     *
     * 边界值注意：
     * numRows =  1、2
    **/
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> result =  new ArrayList<>();
        for (int i = 1; i <= numRows; i++) {
            List<Integer> row = new ArrayList<>();
            row.add(1);
            if(i!=1){
                List<Integer> proRow = result.get(i - 2);
                for (int j = 1; j < i-1; j++)
                    row.add(proRow.get(j-1)+proRow.get(j));
                row.add(1);
            }
            result.add(row);
        }
        return result;
    }


}
